#ifndef _TILE_H_
#define _TILE_H_

#include <string>

/**
  * @brief Format des images utilisees dans des cartes TMX
  */
enum ImageFormat {
    PNG, JPG, BMP, GIF
};

/**
  * @class Tile
  * @brief Ressource des cartes TMX
  */
class Tile {
private :
    std::string _binary ;
    ImageFormat _format ;
    unsigned int _transColor ;
public :
    /**
      * @brief Constructeur
      *
      * Cree une ressource vide
      */
    Tile();
    /**
      * @brief Constructeur
      *
      * @param binary : ressource au format binaire
      * @param format : format de la ressource
      * @param transColor : couleur de transparence de la ressource
      */
    Tile(const char* binary, const char* format, unsigned int transColor = 0xFFFFFF) ;
    /**
      * @brief La ressource est-elle vide
      *
      * @return Vrai si la ressource est vide, faux sinon
      */
    bool empty() const ;
    /**
      * @brief Format de la ressource
      *
      * @return Le format de la ressource
      */
    ImageFormat format() const ;
    /**
      * @brief Donnees binaires de la ressources
      *
      * @return Un pointeur sur les données brutes de la ressources, NULL si
                la ressource est vide.
      */
    const char* binaryData() const ;
    /**
      * @brief Taille de la ressource, en octets
      *
      * @return La taille de la ressource
      */
    int binaryDataLength() const ;
    /**
      * @brief Couleur de transparence de la ressource
      *
      * @return La couleur de transparence
      */
    unsigned int transparentColor() const ;
} ;

#endif // _TILE_H_
